
import qs from 'qs'
import { COMMON_METHOD } from '@/constant/common'
import Vue from 'vue'

const moduleName = 'system'
// 组织机构
export const organization = Object.assign({}, COMMON_METHOD, {
  serveUrl: '/' + moduleName + '/' + 'organization' + '/',
  tree() {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'tree')
  },
  enable(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/enable')
  },
  disable(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/disable')
  },
  // 根据id列表查询信息
  getOrganization(idList) {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'getOrganization?' + qs.stringify(idList, { arrayFormat: 'repeat' }))
  },
  // 下载导入模板
  downloadImportTemplate() {
    return Vue.prototype.$httpRequest.download(this.serveUrl + 'downloadImportTemplate')
  },
  // 导入
  import(params) {
    return Vue.prototype.$httpRequest.post(this.serveUrl + 'importExcel', params, true, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  },
  // 导出
  export(params) {
    return Vue.prototype.$httpRequest.download(this.serveUrl + 'exportExcel', params)
  }
}
)

// 用户
export const user = Object.assign({}, COMMON_METHOD, {
  serveUrl: '/' + moduleName + '/' + 'user' + '/',
  enable(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/enable')
  },
  disable(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/disable')
  },
  resetPassword(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/resetPassword')
  },
  unlock(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/unlock')
  },
  // 用户修改密码
  changePassword(id, params) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/changePassword', qs.stringify(params))
  },
  // 获取用户组对应的用户
  getUserGroupUser(userGroupId, params) {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'userGroup/' + userGroupId, params)
  },
  // 获取用户对应的用户组
  getUserGroup(id) {
    return Vue.prototype.$httpRequest.get(this.serveUrl + id + '/getUserGroup')
  },
  // 保存用户组
  saveUserGroup(id, userGroupIdList) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/saveUserGroup', qs.stringify(userGroupIdList, { arrayFormat: 'repeat' }))
  },
  // 登录
  login(username, password) {
    return Vue.prototype.$httpRequest.post(this.serveUrl + 'login', qs.stringify({ username, password }))
  },
  // 注销
  logout() {
    return Vue.prototype.$httpRequest.post(this.serveUrl + 'logout')
  },
  // 根据id列表查询用户信息
  getUser(idList) {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'getUser?' + qs.stringify(idList, { arrayFormat: 'repeat' }))
  },
  // 下载导入模板
  downloadImportTemplate() {
    return Vue.prototype.$httpRequest.download(this.serveUrl + 'downloadImportTemplate')
  },
  // 导入
  import(params) {
    return Vue.prototype.$httpRequest.post(this.serveUrl + 'importExcel', params, true, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  },
  // 导出
  export(params) {
    return Vue.prototype.$httpRequest.download(this.serveUrl + 'exportExcel', params)
  },
  // 高级查询初始化
  initAdvanceQuery() {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'initAdvanceQuery')
  },
  // 高级查询-分页
  advanceQueryPage(params) {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'advanceQueryPage', params)
  }

}
)

// 权限项
export const permission = Object.assign({}, COMMON_METHOD, {
  serveUrl: '/' + moduleName + '/' + 'permission' + '/',
  tree() {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'tree')
  },
  enable(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/enable')
  },
  disable(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/disable')
  }
}
)

// 系统参数
export const param = Object.assign({}, COMMON_METHOD, {
  serveUrl: '/' + moduleName + '/' + 'param' + '/'
}
)

// 用户组
export const userGroup = Object.assign({}, COMMON_METHOD, {
  serveUrl: '/' + moduleName + '/' + 'userGroup' + '/',
  tree() {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'tree')
  },
  enable(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/enable')
  },
  disable(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/disable')
  },
  // 批量移除用户
  batchRemoveUser(id, idList) {
    // 注意 http delete方法无法传递参数，此处使用put方法替代
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/user', qs.stringify(idList, { arrayFormat: 'repeat' }))
  },
  // 新增用户
  addUser(id, idList) {
    return Vue.prototype.$httpRequest.post(this.serveUrl + id + '/user', qs.stringify(idList, { arrayFormat: 'repeat' }))
  },
  // 获取权限
  getPermission(id) {
    return Vue.prototype.$httpRequest.get(this.serveUrl + id + '/getPermission')
  },
  // 保存权限
  savePermission(id, permissionIdList) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/savePermission', qs.stringify(permissionIdList, { arrayFormat: 'repeat' }))
  },
  // 根据id列表查询
  getByIdList(idList) {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'getByIdList?' + qs.stringify(idList, { arrayFormat: 'repeat' }))
  }
}
)

// 字典类型
export const dictionaryType = Object.assign({}, COMMON_METHOD, {
  serveUrl: '/' + moduleName + '/' + 'dictionaryType' + '/',
  tree() {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'tree')
  },
  // 批量保存
  saveItem(id, itemList) {
    return Vue.prototype.$httpRequest.post(this.serveUrl + id + '/item', itemList)
  },
  // 通过编码获取字典项，转换为列表项数据结构，用于公用选择控件
  getItem(code) {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'getItem?code=' + code)
  }
}
)

// 字典项
export const dictionaryItem = Object.assign({}, COMMON_METHOD, {
  serveUrl: '/' + moduleName + '/' + 'dictionaryItem' + '/',
  enable(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/enable')
  },
  disable(id) {
    return Vue.prototype.$httpRequest.put(this.serveUrl + id + '/disable')
  }
}
)

// 系统日志
export const log = {
  serveUrl: '/' + moduleName + '/' + 'log' + '/',

  page(params) {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'page', params)
  },
  get(id) {
    return Vue.prototype.$httpRequest.get(this.serveUrl + id)
  }
}

// 用户设置
export const userProfile = Object.assign({}, COMMON_METHOD, {
  serveUrl: '/' + moduleName + '/' + 'userProfile' + '/',
  get() {
    return Vue.prototype.$httpRequest.get(this.serveUrl)
  }
}
)

// 系统管理
export const systemManage = Object.assign({}, {
  serveUrl: '/' + moduleName + '/' + 'systemManage' + '/',
  // 重建系统缓存
  rebuildSystemCache() {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'rebuildSystemCache')
  },
  // 获取授权信息
  getLicenceInfo() {
    return Vue.prototype.$httpRequest.get(this.serveUrl + 'getLicenceInfo')
  },
  // 保存授权码
  saveLicenceCode(params) {
    return Vue.prototype.$httpRequest.post(this.serveUrl + 'saveLicenceCode', params)
  }
}
)
